#ifndef __aWindow__h__included__
#define __aWindow__h__included__

#include "neiderra/core/Base.h"
//#include "aEventSender.h"
//#include "GUIEvent.h"

#include <string>

//using neiderra::core::events::aEventSender;
using std::string;
using namespace neiderra::gui::events;
using namespace neiderra::core;

namespace neiderra 
{
	namespace gui 
	{

		class GUIWindowImpl;

		//! Window interface
		class GUIWindow: public Base 
		{
		public:
			GUIWindow(Core* core);
		
			/*GUIWindow(Core* core,
				const string& title,
				int x,
				int y,
				GUIWindow* parent);*/
		
			virtual void show();
			virtual void update();
		
			void setWindowImpl(GUIWindowImpl* impl);
			void setDimentions(unsigned width, unsigned height);
		
			unsigned getWidth();
			unsigned getHeight();
			GUIWindowImpl* getWindowImpl() {return impl_;}
		
			const char* getTitle() {return title_.c_str();}
		
			virtual ~GUIWindow();
		
		/*public:
			event   onMouseDown,
					onMouseUp,
					onKeyDown,
					onKeyUp,
					onClick,
					onKeyPressed;
		*/
		protected:
			GUIWindowImpl* impl_;
			string title_;
		};

	}
}


#endif
